// const express = require('express')
// const jwt = require('jsonwebtoken')
// const { expressjwt } = require('express-jwt')
// const cors = require('cors')
// const bodyParser = require('body-parser')
// const app = express()

// app.use(cors())
// app.use(bodyParser.urlencoded({ extended: false }))
// const secretKey = 'is key --!'
// app.use(expressjwt({ secret: secretKey, algorithms: ['HS256'] }).unless({ path: [/^\/api\//] }))//unless({path:[正则匹配]})配置不允许访问该token信息的接口
// app.post('/api/login', function (req, res) {
//     const userinfo = req.body
//     if (userinfo.username !== 'admin' || userinfo.password !== '000000') {
//         return res.send({
//             status: 400,
//             message: '登录失败！'
//         })
//     }
//     // 密码不可加密到token字符串中
//     const tokenStr = jwt.sign({ username: userinfo.username }, secretKey, { expiresIn: '50s' })
//     res.send({
//         status: 200,
//         message: '登录成功！',
//         token: tokenStr
//     })
// })
// app.get('/admin/getinfo', function (req, res) {
//     console.log(req.auth);
//     res.send({
//         status: 200,
//         message: '获取用户信息成功！',
//         data: req.auth
//     })
// })
// // 捕获因token过期的错误
// app.use((err, req, res, next) => {
//     // 如果token解析失败会返回一个UnauthorizedError
//     if (err.name === 'UnauthorizedError') {
//         res.send({
//             status: 401,
//             msg: '无效token'
//         })
//     }
//     res.send({
//         status: 500,
//         msg: '未知错误'
//     })
// })
// app.listen(8888, function () {
//     console.log('Express server running at http://127.0.0.1:8888')
// })


const express = require('express')
const jwt = require('jsonwebtoken')//加密
const { expressjwt } = require('express-jwt')//解密
const cors = require('cors')
const app = express()
app.use(cors())
app.use(express.urlencoded({ extended: false }))
const secretKey = 'is key --!'
app.use(expressjwt({secret: secretKey, algorithms: ['HS256'] }).unless({path: [/^\/api\//] }))
app.post('/api/login', (req, res) => {
    const userinfo = req.body
    if (userinfo.username !== 'admin' || userinfo.password !== '000000') {
        return res.send({
            status: 201,
            msg: '登录失败'
        })
    }
    const tokenStr = jwt.sign({ username: userinfo.username }, secretKey, { expiresIn: '50s' })
    res.send({
        status: 200,
        msg: '登录成功',
        token: tokenStr
    })

})
app.get('/admin/get', (req, res) => {
    console.log(req.auth);//解密后的token信息 会存放在req.auth里
    res.send({
        status: 200,
        msg: '获取成功',
        data: req.auth
    })
})
// 捕获token过期导致的错误 防止程序崩溃
app.use((err, req, res, next) => {
    if (err.name === 'UnauthorizedError') {
        res.send({
            status: 401,
            msg: 'token已过期'
        })
    }
    res.send({
        status: 500,
        msg: '未知错误'
    })
})
app.listen(8080, () => {
    console.log('Express runing at http://127.0.0.1:8080');
})